package com.lovo.project.dao;

import com.lovo.project.model.PetDO;
import com.lovo.project.model.PetOwnDO;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;

/**
 * @author 955
 * @title 宠物持久接口
 * @date 2020/11/3 20:29
 */
public interface PetDAO  {
    /**
     * 添加新宠物
     * @param pet 新宠物对象
     * 如果返回影响数据库行数为0则抛出添加失败异常，为1则添加成功，并封装vo
     * @return 是否添加成功
     */
    int insertPet(PetDO pet);
    /**
     * 删除宠物
     * 如果返回影响数据库行数为0则抛出删除失败异常，为1则删除成功，并封装vo
     * @param id 要删除的宠物id
     * @return 是否删除成功
     */
    int deletePet(@Param("pet_id") Integer id);

    /**
     * 根据宠物id查找宠物信息
     * 如果返回null，则抛出根据id未找到异常，不为null则成功查找
     * @param id 宠物id
     * @return 宠物对象
     */
    PetDO selectById(@Param("pet_id")Integer id);

    /**
     * 查询所有宠物信息
     * 如果type和value任何一个不为null，则按条件查找宠物，都为null则查找全部宠物
     * 如果返回的集合长度<=0，则抛出未找到宠物异常，否则成功查找
     * @return 所有宠主物信息集合
     */
    List<PetDO> selectAll(@Param("type") String type, @Param("value") String value);

    /**
     * 修改宠物信息
     * 如果返回数据库影响行数为0，则抛出修改失败异常，否则成功修改
     * @param pet 修改后的宠物对象
     * @return 是否修改成功
     */
    int update(PetDO pet);

    /**
     * 根据宠主id查询宠物集合
     * @param id 宠主id
     * @return 宠物集合
     */
    List<PetDO>byPetOwnerIdSelectPet(@Param("type")String type,@Param("value")String value,@Param("pet_owner_id") Integer id);
}
